﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ITProject.Repository.Abstract;
using System.ComponentModel.DataAnnotations;

namespace ITProject.WebUI.Models.Message
{
    /// <summary>
    /// Klasa modelu widokowego czytania wiadomości.
    /// Autor: Jakub Szatkowski
    /// </summary>
    public class MessageShowViewModel
    {
        [Required]
        [MaxLength(50, ErrorMessage = "Temat wiadomosci moze mieć maksymalnie 50 znaków")]
        public string Subject { get; set; }
        public DateTime DateOfSend { get; set; }
        [Required]
        public string Text { get; set; }
        public string Sender { get; set; }

        /// <summary>
        /// Statyczna metoda do konwersji pojedyńczej encji wiadomości do obiektu modelu widokowego MessageShowViewModel.
        /// Autor: Jakub Szatkowski
        /// </summary>
        /// <param name="message">Encja wiadomości.</param>
        /// <param name="userRepo">Repozytorium użytkowników do pobrania nadawcy.</param>
        /// <returns>Obiekt MessageShowViewModel gotowy do czytania wiadomości.</returns>
        public static MessageShowViewModel Convert(ITProject.Domain.Entities.Message message, IUserRepository userRepo)
        {
            MessageShowViewModel messageViewModel = new MessageShowViewModel();
            messageViewModel.DateOfSend = message.DateOfSend;
            messageViewModel.Text = message.Text;
            messageViewModel.Subject = message.Subject;
            messageViewModel.Sender = userRepo.GetUserById(message.Sender).Login;
            return messageViewModel;
        }
    }
}